import axios from 'axios'// 二次封装axios函数

import config from '../config/index.js'

const baseUrl =process.env.NODE_ENV==='development'?config.baseUrl.dev:config.baseUrl.pro
// 判断当前是否是开发环境还是生产环境 从而拿到请求的接口地址

// 写一个工具es6的类
class HttpRequest{
    constructior(baseUrl){
        //  初始化
        this.baseUrl=baseUrl
    }
    // axios相关的配置
    getInsideConfig(){
      const config={
        baseUrl:this.baseUrl,
        header:{}
      }
      return config
    }
    // 拦截器的函数 在axios官网粘贴
    interceptors(instance){
      // 添加请求拦截器
      instance.interceptors.request.use(function (config) {
          // 在发送请求之前做些什么
          return config;
        }, function (error) {
          // 对请求错误做些什么
          return Promise.reject(error);
        });

        // 添加响应拦截器
        instance.interceptors.response.use(function (response) {
          console.log(response,'response');
          // 对响应数据做点什么
          return response;
        }, function (error) {
          console.log(error,'error');
          // 对响应错误做点什么
          return Promise.reject(error);
        });
    }
    // 后续在进行请求接口 就会调用request函数
    request(options){
      const instance=axios.create()
      options={...this.getInsideConfig(),...options}
      this.interceptors(instance)
      return instance(options)
    }
}

// 向外暴露这个类其中还要参数（接口地址）
export default new HttpRequest(baseUrl)